/**
 * @file StaLed.h
 * @author hpy (yuan_hp@qq.com)
 * @brief LED状态灯控制
 * @version 0.1
 * @date 2024-07-13
 * 
 * @copyright Copyright (c) 2024
 * 
 */
#ifndef __STALED_H__
#define __STALED_H__

#include "platform.h"

#define STALED_ON            0xFF   // LED亮
#define STALED_OFF           0X00   // LED灭
#define STALED_BLINK_LOW     0XF0   // LED慢闪
#define STALED_BLINK_MID     0XCC   // LED中速闪烁
#define STALED_BLINK_FAST    0XAA   // LED快闪
#define STALED_BLINK_LITE    0X01   // LED 

#define STALEN_NUM  1  // LED的数量  1 ~ 32 

typedef struct __STALED_
{
    volatile uint32_t *port ;
    uint8_t  led[STALEN_NUM]  ;
    uint32_t reg ; 
}   StaLed_t ;

/**
 * @brief 指定LED端口的地址
 * 
 * @param ledst 
 * @param _port 
 */
void StaLed_Init(
    StaLed_t *ledst ,
    volatile uint32_t * _port 
) ;

/**
 * @brief 设置LED的闪烁模式
 * 
 * @param ledst 
 * @param id LED的编号
 * @param value 
 */
void StaLed_Set(StaLed_t *ledst ,uint8_t id , uint8_t value);

/**
 * @brief LED状态轮询
 * 
 * @param ledst 
 */
void StaLed_Yield(StaLed_t *ledst) ;

#endif 